home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / include / bits / link.h < prev    next >
C/C++ Source or Header  |  2009-10-07  |  3KB  |  118 lines

  1. /* Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc.
  2.    This file is part of the GNU C Library.
  3.  
  4.    The GNU C Library is free software; you can redistribute it and/or
  5.    modify it under the terms of the GNU Lesser General Public
  6.    License as published by the Free Software Foundation; either
  7.    version 2.1 of the License, or (at your option) any later version.
  8.  
  9.    The GNU C Library is distributed in the hope that it will be useful,
  10.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  12.    Lesser General Public License for more details.
  13.  
  14.    You should have received a copy of the GNU Lesser General Public
  15.    License along with the GNU C Library; if not, write to the Free
  16.    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  17.    02111-1307 USA.  */
  18.  
  19. #ifndef    _LINK_H
  20. # error "Never include <bits/link.h> directly; use <link.h> instead."
  21. #endif
  22.  
  23.  
  24. #if __ELF_NATIVE_CLASS == 32
  25. /* Registers for entry into PLT on IA-32.  */
  26. typedef struct La_i86_regs
  27. {
  28.   uint32_t lr_edx;
  29.   uint32_t lr_ecx;
  30.   uint32_t lr_eax;
  31.   uint32_t lr_ebp;
  32.   uint32_t lr_esp;
  33. } La_i86_regs;
  34.  
  35. /* Return values for calls from PLT on IA-32.  */
  36. typedef struct La_i86_retval
  37. {
  38.   uint32_t lrv_eax;
  39.   uint32_t lrv_edx;
  40.   long double lrv_st0;
  41.   long double lrv_st1;
  42. } La_i86_retval;
  43.  
  44.  
  45. __BEGIN_DECLS
  46.  
  47. extern Elf32_Addr la_i86_gnu_pltenter (Elf32_Sym *__sym, unsigned int __ndx,
  48.                        uintptr_t *__refcook,
  49.                        uintptr_t *__defcook,
  50.                        La_i86_regs *__regs,
  51.                        unsigned int *__flags,
  52.                        const char *__symname,
  53.                        long int *__framesizep);
  54. extern unsigned int la_i86_gnu_pltexit (Elf32_Sym *__sym, unsigned int __ndx,
  55.                     uintptr_t *__refcook,
  56.                     uintptr_t *__defcook,
  57.                     const La_i86_regs *__inregs,
  58.                     La_i86_retval *__outregs,
  59.                     const char *symname);
  60.  
  61. __END_DECLS
  62.  
  63. #else
  64.  
  65. /* Registers for entry into PLT on x86-64.  */
  66. # if __GNUC_PREREQ (4,0)
  67. typedef float La_x86_64_xmm __attribute__ ((__vector_size__ (16)));
  68. # else
  69. typedef float La_x86_64_xmm __attribute__ ((__mode__ (__V4SF__)));
  70. # endif
  71.  
  72. typedef struct La_x86_64_regs
  73. {
  74.   uint64_t lr_rdx;
  75.   uint64_t lr_r8;
  76.   uint64_t lr_r9;
  77.   uint64_t lr_rcx;
  78.   uint64_t lr_rsi;
  79.   uint64_t lr_rdi;
  80.   uint64_t lr_rbp;
  81.   uint64_t lr_rsp;
  82.   La_x86_64_xmm lr_xmm[8];
  83. } La_x86_64_regs;
  84.  
  85. /* Return values for calls from PLT on x86-64.  */
  86. typedef struct La_x86_64_retval
  87. {
  88.   uint64_t lrv_rax;
  89.   uint64_t lrv_rdx;
  90.   La_x86_64_xmm lrv_xmm0;
  91.   La_x86_64_xmm lrv_xmm1;
  92.   long double lrv_st0;
  93.   long double lrv_st1;
  94. } La_x86_64_retval;
  95.  
  96.  
  97. __BEGIN_DECLS
  98.  
  99. extern Elf64_Addr la_x86_64_gnu_pltenter (Elf64_Sym *__sym,
  100.                       unsigned int __ndx,
  101.                       uintptr_t *__refcook,
  102.                       uintptr_t *__defcook,
  103.                       La_x86_64_regs *__regs,
  104.                       unsigned int *__flags,
  105.                       const char *__symname,
  106.                       long int *__framesizep);
  107. extern unsigned int la_x86_64_gnu_pltexit (Elf64_Sym *__sym,
  108.                        unsigned int __ndx,
  109.                        uintptr_t *__refcook,
  110.                        uintptr_t *__defcook,
  111.                        const La_x86_64_regs *__inregs,
  112.                        La_x86_64_retval *__outregs,
  113.                        const char *__symname);
  114.  
  115. __END_DECLS
  116.  
  117. #endif
  118.